home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 September / PCWorld_2002-09_cd.bin / Software / Vyzkuste / httrack / httrack-3.20RC4.exe / {app} / lib / example.c next >
C/C++ Source or Header  |  2001-10-21  |  4KB  |  153 lines

  1. /*
  2.     HTTrack library example
  3.     .c file
  4.  
  5.     To Build on Windows:
  6.     - compile everything in src/ BUT htsparse.c, compile example.c
  7.     - multithreaded
  8.     - avoid precompiled headers with VC
  9.  
  10.     To Build on Linux:
  11.     make lib_linux (or "make lib_netbsd", or "make lib_default" and so on)
  12.     cp htssystem.h src/htssystem.h
  13.     make build_httracklib
  14. */
  15.  
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include "src/httrack-library.h"
  21.  
  22. #include "example.h"
  23.  
  24.  
  25.  
  26. /*
  27.  * Name:           main
  28.  * Description:    main() function
  29.  * Parameters:     None
  30.  * Should return:  error status
  31. */
  32. int main(void) {
  33.   /* 
  34.      First, ask for an URL 
  35.      Note: For the test, option r2 (mirror max depth=1) and --testscan (no index, no cache, do not store, no log files)
  36.   */
  37.   char _argv[][256] = {"httrack_test" , "<URL>" , "-r3" , "--testscan" , ""  };
  38.   char* argv[]      = {NULL           , NULL    , NULL  , NULL        , NULL};
  39.   int         argc = 0;
  40.   while(strlen(_argv[argc])) {
  41.     argv[argc]=_argv[argc];
  42.     argc++;
  43.   }
  44.   argv[argc]=NULL;
  45.   printf("HTTrackLib test program\n");
  46.   printf("Enter URL (example: www.foobar.com/index.html) :");
  47.   scanf("%s",argv[1]);
  48.   printf("Test: 1 depth\n");
  49.  
  50.   hts_init();
  51.   htswrap_add("init",httrack_wrapper_init);
  52.   htswrap_add("free",httrack_wrapper_uninit);
  53.   htswrap_add("start",httrack_wrapper_start);
  54.   htswrap_add("change-options",httrack_wrapper_chopt);
  55.   htswrap_add("end",httrack_wrapper_end);
  56.   htswrap_add("check-html",httrack_wrapper_checkhtml);
  57.   htswrap_add("loop",httrack_wrapper_loop);
  58.   htswrap_add("query",httrack_wrapper_query);
  59.   htswrap_add("query2",httrack_wrapper_query2);
  60.   htswrap_add("query3",httrack_wrapper_query3);
  61.   htswrap_add("check-link",httrack_wrapper_check);
  62.   htswrap_add("pause",httrack_wrapper_pause);
  63.   htswrap_add("save-file",httrack_wrapper_filesave);
  64.   htswrap_add("link-detected",httrack_wrapper_linkdetected);
  65.   htswrap_add("transfer-status",httrack_wrapper_xfrstatus);
  66.  
  67.   /* Then, launch the mirror */
  68.   hts_main(argc,argv);
  69.  
  70.   /* Wait for a key */
  71.   printf("\nPress ENTER key to exit\n");
  72.   scanf("%s",argv[1]);
  73.  
  74.   /* That's all! */
  75.   return 0;
  76. }
  77.  
  78.  
  79. /* CALLBACK FUNCTIONS */
  80.  
  81. /* Initialize the Winsock */
  82. void __cdecl httrack_wrapper_init(void) {
  83.   printf("Engine started\n");
  84. #ifdef _WIN32
  85.   {
  86.     WORD   wVersionRequested;   // requested version WinSock API
  87.     WSADATA wsadata;            // Windows Sockets API data
  88.     int stat;
  89.     wVersionRequested = 0x0101;
  90.     stat = WSAStartup( wVersionRequested, &wsadata );
  91.     if (stat != 0) {
  92.       printf("Winsock not found!\n");
  93.       return;
  94.     } else if (LOBYTE(wsadata.wVersion) != 1  && HIBYTE(wsadata.wVersion) != 1) {
  95.       printf("WINSOCK.DLL does not support version 1.1\n");
  96.       WSACleanup();
  97.       return;
  98.     }
  99.   }
  100. #endif
  101.  
  102. }
  103. void __cdecl httrack_wrapper_uninit(void) {
  104.   printf("Engine exited\n");
  105. #ifdef _WIN32
  106.   WSACleanup();
  107. #endif
  108. }
  109. int __cdecl httrack_wrapper_start(httrackp* opt) {
  110.   printf("Start of mirror\n");
  111.   return 1; 
  112. }
  113. int __cdecl httrack_wrapper_chopt(httrackp* opt) {
  114.   return __cdecl httrack_wrapper_start(opt);
  115. }
  116. int  __cdecl httrack_wrapper_end(void) { 
  117.   printf("End of mirror\n");
  118.   return 1; 
  119. }
  120. int __cdecl httrack_wrapper_checkhtml(char* html,int len,char* url_adresse,char* url_fichier) {
  121.   printf("Parsing html file: http://%s%s\n",url_adresse,url_fichier);
  122.   return 1;
  123. }
  124. int __cdecl httrack_wrapper_loop(void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats) {
  125.   /* printf("..httrack_wrapper_loop called\n"); */
  126.   return 1;
  127. }
  128. char* __cdecl httrack_wrapper_query(char* question) {
  129.   return "N";
  130. }
  131. char* __cdecl httrack_wrapper_query2(char* question) {
  132.   return "N";
  133. }
  134. char* __cdecl httrack_wrapper_query3(char* question) {
  135.   return "";
  136. }
  137. int __cdecl httrack_wrapper_check(char* adr,char* fil,int status) {
  138.   printf("Link status tested: http://%s%s\n",adr,fil);
  139.   return -1;
  140. }
  141. void __cdecl httrack_wrapper_pause(char* lockfile) {
  142. }
  143. void __cdecl httrack_wrapper_filesave(char* file) {
  144. }
  145. int __cdecl httrack_wrapper_linkdetected(char* link) {
  146.   printf("Link detected: %s\n",link);
  147.   return 1;
  148. }
  149. int __cdecl httrack_wrapper_xfrstatus(void* back) {
  150.   return 1;
  151. }
  152.  
  153.